home *** CD-ROM | disk | FTP | other *** search
- code segment
-
- assume cs:code,ds:code
- org 0
-
- jIntNum equ 28
-
- befehl equ 2
- status equ 3
- end_adr equ 14
-
- cmd equ 16384
- arg1 equ cmd+0
- arg2 equ cmd+2
- arg3 equ cmd+4
- arg4 equ cmd+6
- arg5 equ cmd+8
-
- buf_seg equ 22
-
- erst_b equ this byte
-
- treiber:
- dw -1,-1 ; DOS-Intern
- db 0,80h ; Flags
- soffset dw offset strat ; Strategie-Routine
- ioffset dw offset intr ; Interrupt-Routine
- db "$JOY0000" ; Kennung
-
-
- janus_seg dw (?)
- janus_ofs dw (?)
- db_ptr dw (?),(?)
-
- old_int equ this dword
- old_int_ofs dw 0
- old_int_seg dw 0
-
- dummy proc far
- ret
- dummy endp
-
- ; ************ Joystick-Interrupt fr Vektor $15
- new_int proc far
- cmp ah,84h
- jne jump
-
- cmp dx,0
- jne richtung
-
- feuer:
- pushf
- call [cs:old_int]
- push es
- push di
- mov es,cs:janus_seg
- mov di,cs:janus_ofs
- mov es:w[di+arg1],2
- mov es:w[di+arg2],ax
- call near call_and_wait
- mov ax,es:w[di+arg2]
- pop di
- pop es
- iret
-
- richtung:
- pushf
- call [cs:old_int]
- push es
- push di
- mov es,cs:janus_seg
- mov di,cs:janus_ofs
- mov es:w[di+arg1],1
- mov es:w[di+arg2],ax
- mov es:w[di+arg3],bx
- mov es:w[di+arg4],cx
- mov es:w[di+arg5],dx
- call near call_and_wait
- mov ax,es:w[di+arg2]
- mov bx,es:w[di+arg3]
- mov cx,es:w[di+arg4]
- mov dx,es:w[di+arg5]
- pop di
- pop es
- iret
-
- jump:
- jmp [cs:old_int]
- new_int endp
-
-
- call_and_wait proc near
- mov ah,7
- mov al,jIntNum
- int 0b
- mov ah,8
- mov al,jIntNum
- int 0b
- ret
- call_and_wait endp
-
-
- ende equ this byte
- ; ------------ Ende des Treiberprogramms ------------
-
-
- ; ************ Interruptroutine des Treibers
-
- strat proc far
- mov cs:db_ptr,bx
- mov cs:db_ptr+2,es
- ret
- strat endp
-
- intr proc far
- pusha
- push cs
- pop ds
-
- les di,dword ptr db_ptr
- mov bl,es:[di+befehl]
- cmp bl,0
- je bc_okay
-
- mov ax,8003h
- jmp short intr_end
-
- bc_okay:
- call init
-
- intr_end label near
- or ax,0100h
- mov es:[di+status],ax
-
- popa
- ret
- intr endp
-
-
- init proc near
- mov dx,offset initm
- mov ah,9
- int 21h
-
- push es
- push di
- mov ah,1
- mov al,jIntNum
- int 0b
- mov ax,di
- mov janus_ofs,di
- mov janus_seg,es:w[buf_seg]
- pop di
- pop es
- cmp ax,-1
- jne janus_okay
-
- mov dx,offset kserv
- mov ah,9
- int 21h
-
- mov word ptr es:[di+end_adr],offset treiber
- mov word ptr es:[di+end_adr+2],cs
- jmp near init_ende
-
- janus_okay:
- push cs
- pop ds
-
- mov word ptr es:[di+end_adr],offset ende
- mov word ptr es:[di+end_adr+2],cs
- mov ioffset,offset dummy
- mov soffset,offset dummy
-
- mov es,cs:janus_seg
- mov di,cs:janus_ofs
- mov es:w[di+arg1],3
- call near call_and_wait
-
- mov ah,35h
- mov al,15h
- int 21h
- mov old_int_ofs,bx
- mov old_int_seg,es
-
- mov ah,25h
- mov al,15h
- mov dx,offset new_int
- int 21h
-
- mov dx,offset sokay
- mov ah,9
- int 21h
-
- init_ende:
- xor ax,ax
- ret
- init endp
-
-
- exe_start proc far
- push cs
- pop ds
-
- mov ah,9
- mov dx,offset infot
- int 21h
-
- mov ax,4c00
- int 21h
- exe_start endp
-
-
- ; ************ Installationsmeldungen beim Start
- initm db "ATUtilities Joystick-Manager - Version 2.0 17. September 1993",13,10
- db "Copyright (C) 1993 by Thomas Dreibholz. All rights reserved.",13,10,"$"
- sokay db "Treiber wurde erfolgreich installiert.",13,10,10,"$"
- kserv db "Amiga-Treiber an Janus-Interrupt 28 ist nicht aktiv.",13,10
- db "Bitte berprfen Sie die Installation der ATUtilities.",13,10
- db "Treiber konnte nicht installiert werden.",13,10,10,"$"
- infot db "ATUtilities Joystick-Manager:",13,10
- db "Dieses Programm ist ein Treiberprogramm und kann deshalb nicht direkt ausge-",13,10
- db "fhrt werden. Um den Treiber zu installieren, muá folgende Zeile in die",13,10
- db "CONFIG.SYS eingefgt werden:",13,10,10
- db "DEVICE=Lw:\Verz\JOY.EXE",13,10,10
- db "Nach dem nchsten Reset steht der Joystick-Manager zur Verfgung. Beim Ein-",13,10
- db "binden des Programms durch die CONFIG.SYS muá auf dem Amiga das Programm",13,10
- db "Joystick-Manager aktiv sein.",13,10
- db "JOY.EXE fngt alle Aufrufe fr die",13,10
- db "Joystick-Funktionen des Interrupt 15h ab und leitet sie auf dem Amiga",13,10
- db "um. Alle Programme, deren Abfrage ber diese Funktionen luft, knnen",13,10
- db "nun dem Joystick im rechten Amiga-Port nutzen.",13,10,10
- db "17. 09. 1993 - Version 2.0 Copyright (C) 1993 by Thomas Dreibholz",13,10,10,"$"
-
- code ends
- end exe_start